ποΈGitΠ―ΡΠ°ποΈ
Mirrored from https://github.com/torlando-tech/Columba-iOS synced 1h ago
iOS version of Columba, the native LXMF messaging app for Reticulum networks
σ° Files β’ σ±£ Work (0) β’ σ° Commits (620) β’ σ°¬ Branches (51) β’ σ°Ό Tags (0) β’ σ° Thanks (1) β’ ο Stats
>Columba
An iOS messaging app built on Reticulum for encrypted, off-grid communication. It supports text messaging, voice calls, location sharing, and file transfers over TCP, local Wi-Fi, BLE, and LoRa radio.
Build flavors
Columba has two compile-time app flavors. They are separate targets and schemes, not a runtime preference.
ββββββββββββββββββββββββ¬βββββββββββββββββββ¬βββββββββββββββββ¬ββββββββββββββββββββββββββ¬ββββββββββββββ
β Flavor β App target β Scheme β Runtime flag β Purpose β
ββββββββββββββββββββββββΌβββββββββββββββββββΌβββββββββββββββββΌββββββββββββββββββββββββββΌββββββββββββββ€
β Shipping β T383838ColumbaApp β T383838Columba β T383838COLUMBA_RUNTIME_PYTHON β Embedded Pβ¦ β
β Experimental Model B β T383838ColumbaModelBApp β T383838Columba-ModelB β T383838COLUMBA_RUNTIME_MODEL_B β Native proβ¦ β
ββββββββββββββββββββββββ΄βββββββββββββββββββ΄βββββββββββββββββ΄ββββββββββββββββββββββββββ΄ββββββββββββββ
The shipping app owns T383838Python.xcframework, the Python bridge and runtime, Python model/backend sources, the Python T383838app/ resources, wheels, standard-library installation, and packaging. It has no Network Extension target dependency or embed, no packet-tunnel entitlement, and no Model B lifecycle, UI, or proxy behavior. Its default Internet TCP delivery is foreground/opportunistic; the shipping artifact does not guarantee background Internet TCP delivery.
T383838ColumbaApp still links T383838ReticulumSwift because shared public T383838MessageRepository/T383838LXMFSwift signatures expose ReticulumSwift types. That linkage does not mean the shipping app runs the native Model B stack.
The experimental app owns T383838ProxyRnsBackend, Model B host/proxy/App Group IPC sources, direct ReticulumSwift linkage, and the dependency and signed embed for T383838ColumbaNetworkExtension. It excludes the Python framework, Python-only sources and resources, wheels, bridging header, and Python packaging phases. See Model B β Background LXMF Delivery.
Build flavor is fixed at compile time. Each app target has exactly one canonical runtime flag. The old T383838Columba-Swift scheme, T383838Debug-Swift/T383838Release-Swift configurations, and T383838BackendPreference.modelB runtime selector are retired. T383838COLUMBA_BACKEND_SWIFT remains on Model B as a temporary compatibility condition for a transport-settings branch; it is not the architecture selector. A persisted T383838useSwiftBackend value does not select the architecture.
Building
Requires Xcode 15+ and iOS 17+.
The shipping Python build has generated local prerequisites that SPM cannot provide. On a fresh clone, provision the embedded CPython distribution and iOS wheels with the project setup scripts:
T282828
support/fetch-python.sh
support/fetch-wheels.sh
These populate the gitignored T383838Frameworks/Python.xcframework/, T383838wheels-iphoneos/, and T383838wheels-iphonesimulator/ paths consumed by the T383838ColumbaApp packaging phase. See support/README.md for pinned versions and packaging details. SPM resolves the Swift package dependencies, but it does not replace these Python prerequisites.
Standard shipping simulator build:
T282828
xcodebuild -project Columba.xcodeproj Tffea00\
-scheme Columba Tffea00\
-configuration Debug Tffea00\
-destination Ta5d6ff'generic/platform=iOS Simulator' Tffea00\
build
Experimental Model B simulator build:
T282828
xcodebuild -project Columba.xcodeproj Tffea00\
-scheme Columba-ModelB Tffea00\
-configuration Debug Tffea00\
-destination Ta5d6ff'generic/platform=iOS Simulator' Tffea00\
build
T383838Columba-ModelB is the canonical path for the experimental flavor: its Build action includes T383838ColumbaModelBApp and T383838ColumbaNetworkExtension, and its Test action includes T383838ColumbaModelBAppTests. Use T383838build-for-testing instead of T383838build when the test bundle must also be compiled. Do not build the extension separately as the normal workflow. The T383838Columba scheme is shipping-only.
Physical-device builds require a valid signing team and provisioning for the selected app. Model B device builds must also sign the extension and provision its Network Extension and App Group capabilities.
Local development against unreleased library changes
To work against an in-progress local clone of any Reticulum-stack Swift library without committing a path override, add a per-machine SPM mirror file at T383838.swiftpm/configuration/mirrors.json (T383838.swiftpm/ is gitignored):
T282828
Tb4b4b4{
Tff7b72"version"Tb4b4b4: T79c0ff1Tb4b4b4,
Tff7b72"object"Tb4b4b4: Tb4b4b4[
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/reticulum-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/reticulum-swift" Tb4b4b4},
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/LXMF-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/LXMF-swift" Tb4b4b4},
Tb4b4b4{ Tff7b72"original"Tb4b4b4: Ta5d6ff"https://github.com/torlando-tech/LXST-swift.git"Tb4b4b4, Tff7b72"mirror"Tb4b4b4: Ta5d6ff"/Users/you/repos/LXST-swift" Tb4b4b4}
Tb4b4b4]
Tb4b4b4}
The top-level key is T383838object, not T383838mirrors. That is the on-disk format SPM's T383838MirrorsStorage reads and the shape written by T383838swift package config set-mirror; using T383838mirrors produces a no-op load without a warning.
SPM resolves the listed URLs to local checkouts, so library changes are picked up without modifying T383838Package.swift or the Xcode project. Remove the file to return to published versions.
Architecture
β’ Embedded Python RNS/LXMF β default shipping messaging runtime
β’ ReticulumSwift β native Reticulum stack used directly by experimental Model B and linked by shipping for shared public type signatures
β’ LXMFSwift β shared LXMF persistence/API surface and Model B router
β’ LXSTSwift β voice call transport
β’ MapLibre β offline-capable map rendering
See ARCHITECTURE.md for target ownership and dependency boundaries.
Acknowledgements
β’ This work was partially funded by the Solarpunk Pioneers Fund
β’ K8 and 405nm for generously donating for an iPhone
License
Served by rngit 1.4.2 - Generated in 0.55s